import axios from "axios"

export const baseURL = 'http://47.107.117.164:8888/home'

class HttpRequest {
    
    // 实例对象
    http = null
	
	constructor() {
        this.init()
	}
    
    init() {
        this.http = axios.create({
          baseURL: baseURL,
          timeout: 10000,
        //   headers: {'Authorization': ''},
           // `url` 是用于请求的服务器 URL
            // url: '/Business/Spus?SinceId=-1',
          
            // `method` 是创建请求时使用的方法
            // method: 'get', // 默认是 get
        })
        
        // 添加请求拦截器
        this.http.interceptors.request.use(function (config) {
            console.log('请求前', config)
            // 在发送请求之前做些什么
            // uniapp加载api
            // uni.showLoading()
            return config;
          }, function (error) {
            // 对请求错误做些什么
            return Promise.reject(error);
          });
          
        // 添加响应拦截器
        this.http.interceptors.response.use(function (response) {
            console.log('响应前', response)
            // uniapp隐藏加载api
            // uni.hideLoading()
            
            const data = response.data
            
            // 对响应数据做点什么
            // if (data.Data) {
            //     const res = data.Data
            //     // 自定义返回值
            //     return res;
            // } else if (!data.Status) {
            //     // 返回状态错误时执行
            //     console.error(data.Message)
            //     // uni.showToast({
            //     //     title: data.Message,
            //     //     icon: 'none'
            //     // })
            //     return Promise.reject(data.Message);
            // }
            
            // 默认返回值
            return data;
          }, function (error) {
            // 对响应错误做点什么
            console.log('对响应错误做点什么')
            const res = error.response
            // console.log(error.response)
            // console.log(error.request)
            //  uni.hideLoading()
             const data = error.response.data
             console.log(data)
             if (data.status === 401) {
                 // 跳转到登录页,待补充
                //  uni.showToast({
                //      title: data.message,
                //      icon: 'none'
                //  })
             } else if(res.status === 403) {
                alert(data.message)
             }
            console.error(error)
            return Promise.reject(error);
          });
    }
    
    // 执行 GET 请求
    get(url, params) {
        return new Promise((resolve, reject) => {
            console.log('-------------------------------------')
            console.log(url, params)
            this.http.get(url, {
                params: params
            }).then(res => {
                console.log(res)
                resolve(res)
            }).catch(err => {
                reject(err)
            })
        })
    }
    
    // 执行 POST 请求
    post(url, params) {
        return new Promise((resolve, reject) => {
            this.http.post(url, params).then(res => {
                console.log(res)
                resolve(res)
            }).catch(err => {
                reject(err)
            })
        })
    }
    
    // 执行PUT 请求
    put(url, params) {
        return new Promise((resolve, reject) => {
            this.http.put(url, params).then(res => {
                console.log(res)
                resolve(res)
            }).catch(err => {
                reject(err)
            })
        })
    }
    
    // 执行 DELETE 请求
    delete(url, params) {
        return new Promise((resolve, reject) => {
            this.http.delete(url, {
                params: params
            }).then(res => {
                console.log(res)
                resolve(res)
            }).catch(err => {
                reject(err)
            })
        })
    }
    
    // 执行多个并发请求
    all(requestArray) {
        return new Promise((resolve, reject) => {
            axios.all(requestArray).then(axios.spread(function () {
            // 所有请求现在都执行完成
            console.log('所有并发请求成功')
            // 返回所有数据
            resolve(arguments)
          })).catch(err => {
                console.log('并发请求存在错误')
                console.error(err)
                reject(err)
            }).finally(() => {
                
            })
        })
    }
}

export default new HttpRequest()